#!/bin/bash

# Node.js项目构建脚本示例
# 此脚本演示了如何在CI/CD管道中构建Node.js项目
# 缓存系统会自动处理node_modules的缓存和恢复

echo "🚀 开始构建Node.js项目..."
echo "当前目录: $(pwd)"
echo "Node.js版本: $(node --version)"
echo "npm版本: $(npm --version)"

# 显示package.json信息
echo "📦 项目信息:"
if [ -f "package.json" ]; then
    echo "项目名称: $(cat package.json | grep '"name"' | cut -d'"' -f4)"
    echo "项目版本: $(cat package.json | grep '"version"' | cut -d'"' -f4)"
else
    echo "❌ 未找到package.json文件"
    exit 1
fi

# 检查是否存在node_modules（缓存恢复后应该存在）
if [ -d "node_modules" ]; then
    echo "✅ node_modules目录已存在（来自缓存）"
    echo "依赖数量: $(ls node_modules | wc -l)"
else
    echo "📥 node_modules不存在，开始安装依赖..."
fi

# 安装依赖（如果缓存命中，这一步会很快）
echo "📥 安装项目依赖..."
npm install

if [ $? -eq 0 ]; then
    echo "✅ 依赖安装成功"
else
    echo "❌ 依赖安装失败"
    exit 1
fi

# 运行测试（如果有的话）
echo "🧪 运行测试..."
npm test 2>/dev/null || echo "⚠️  没有配置测试脚本"

# 构建项目（如果有构建脚本）
echo "🔨 构建项目..."
if npm run build 2>/dev/null; then
    echo "✅ 项目构建成功"
else
    echo "⚠️  没有配置构建脚本，跳过构建步骤"
fi

# 显示最终的node_modules信息
echo "📊 构建完成后的依赖信息:"
if [ -d "node_modules" ]; then
    echo "node_modules大小: $(du -sh node_modules | cut -f1)"
    echo "依赖包数量: $(ls node_modules | wc -l)"
fi

echo "🎉 构建流程完成！"
echo "💾 node_modules将被缓存以加速后续构建"